/*
 * 例 3-2
 * 开灯问题
 * 有 n 盏灯，编号 1~n。
 * 第 1 个人把灯全部打开，
 * 第 2 个人按下所有编号为 2 的倍数的开关，
 * 第 3 个人按下所有编号为 3 的倍数的开关，
 * 以此类推。
 * 共有 k 个人，
 * 问最后开着的灯的编号。
 * （k <= n <= 1000）
 *
 * 样例输入：
 * 7 3
 * 样例输出：
 * 1 5 6 7
 */
#include <iostream>
#define LOCAL
using namespace std;

bool lights[1010]; // true/false 开/关
int main()
{
    int n, k;
#ifdef LOCAL
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    while (scanf("%d %d", &n, &k) == 2)
    {
        // 把所有灯打开：true
        for (int i = 1; i < n; ++i)
            lights[i] = true;

        // 反复开关
        for (int i = 2; i <= k; ++i)
            for (int j = 1, x = i * j; x <= n; ++j, x = i * j)
                lights[x] ^= true;

        // 输出检查为 true（打开）的灯
        for (int i = 1; i <= n; ++i)
            if (lights[i])
                cout << i << " ";
        cout << endl;
    }
    return 0;
}

// 课本答案
// #include <cstdio>
// #include <cstring>
// #define maxn 1010
// int a[maxn];
// int main()
// {
//     int n, k, first = 1;     // first 用来控制输出格式
//     memset(a, 0, sizeof(a)); // 一开始所有的灯都是关上的
//     // 输入
//     scanf("%d%d", &n, &k);
//     // 算法
//     for (int i = 1; i <= k; ++i)
//         for (int j = 1; j <= n; ++j)
//             if (j % i == 0)
//                 a[j] = !a[j];
//     // 输出
//     for (int i = 1; i <= n; ++i)
//         if (a[i])
//         {
//             if (first)
//                 first = 0;
//             else
//                 printf(" ");
//             printf("%d", i);
//         }
//     printf("\n");
//     return 0;
// }